package pers.cj.pdos.mapper;

import org.apache.ibatis.annotations.Param;
import pers.cj.pdos.entity.InGoods;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import pers.cj.pdos.vo.InGoodsOrderVo;
import pers.cj.pdos.vo.InGoodsVo;

import java.util.Date;
import java.util.List;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author chenj
 * @since 2019-11-04
 */
public interface InGoodsMapper extends BaseMapper<InGoods> {

    List<InGoodsVo> listVo(@Param("companyId") String companyId,
                           @Param("page") Integer page,
                           @Param("limit") Integer limit,
                           @Param("status") Integer status,
                           @Param("close") Boolean close,
                           @Param("search") String search,
                           @Param("no") String no,
                           @Param("goodsName") String goodsName,
                           @Param("remark") String remark,
                           @Param("provider") String provider,
                           @Param("makeTime1") Date makeTime1,
                           @Param("makeTime2")Date makeTime2,
                           @Param("storeId") String storeId,
                           @Param("userStoreId") String userStoreId,
                           @Param("userId") String userId,
                           @Param("date1")Date date1,
                           @Param("date2")Date date2,
                           @Param("date")Date date,
                           @Param("providerId") String providerId,
                           @Param("houseId") String houseId,
                           @Param("makeUserId") String makeUserId);

    Long count(@Param("companyId")String companyId,
               @Param("status") Integer status,
               @Param("close") Boolean close,
               @Param("search") String search,
               @Param("no") String no,
               @Param("goodsName") String goodsName,
               @Param("remark") String remark,
               @Param("provider") String provider,
               @Param("makeTime1") Date makeTime1,
               @Param("makeTime2")Date makeTime2,
               @Param("storeId") String storeId,
               @Param("userStoreId") String userStoreId,
               @Param("userId") String userId,
               @Param("date1")Date date1,
               @Param("date2")Date date2,
               @Param("date")Date date,
               @Param("providerId") String providerId,
               @Param("houseId") String houseId,
               @Param("makeUserId") String makeUserId);

    List<InGoodsVo> listVoForSelect(@Param("companyId") String companyId,
                                    @Param("page") Integer page,
                                    @Param("limit") Integer limit,
                                    @Param("storeId") String storeId,
                                    @Param("userStoreId") String userStoreId,
                                    @Param("userId") String userId,
                                    @Param("search") String search);

    Long countForSelect(@Param("companyId") String companyId,
                        @Param("storeId") String storeId,
                        @Param("userStoreId") String userStoreId,
                        @Param("userId") String userId,
                        @Param("search") String search);

    /**
     * 根据id获取进货单的详细信息，同时会把goodsSnList和库存相关信息也会放在里面。
     * @param id
     * @return
     */
    InGoodsVo getVoById(@Param("id")String id);

    List<InGoodsVo> listVoByIds(@Param("ids")List<String> ids);

    List<InGoodsVo> listVoByInGoodsOrder(@Param("inGoodsOrderId")String inGoodsOrderId);

    List<InGoodsVo> listVoByBorrowInId(@Param("borrowInId")String borrowInId);
}
